package com.chixing.day16_io.work;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Locale;

public class ProductReflectDemo {
    public static void main(String[] args) {
        boolean result1 = hasGetMethod(Product.class,"proId");
        System.out.println(result1);
        boolean result2 = hasGetMethod(Product.class,"proName");

    }
    public static boolean hasGetMethod(Class clazz,String fieldName){
        /*
           public int getProId(){  }
           1.获得字段 proId 的数据类型 int
           2. Product 中找出 方法名为 "getProId" ,并且 参数列表是空的 null , 并且 返回值是int
              若存在这样的方法结构，说明对应的get方法是存在的
              否则就是不存在
        */
        //获得该字段的数据类型
        Field field  =null;
        try {
            field =  clazz.getDeclaredField(fieldName);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }

        Class<?> fieldType = field.getType(); //int

        String methodName = "get"+ String.valueOf(fieldName.charAt(0)).toUpperCase() + fieldName.substring(1);
        System.out.println("要比较的方法名称：" + methodName);


        Method method =null;
        try {
            method =  clazz.getMethod(methodName);
        } catch (NoSuchMethodException e) {
            System.out.println("没有该方法" + methodName);
            return false;
        }

         return method.getReturnType().equals(fieldType);


    }
}
